#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：spider_learning 
@File ：url_spider.py
@IDE  ：PyCharm 
@Author ：李涵彬
@Date ：2024/3/2 21:15 
"""

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service


def crawl_bilibili_videos(url):
	# 设置 edge 驱动程序的路径
	edge_driver_path = "D:\webdriver\edgedriver_win64\msedgedriver.exe"  # 将路径替换为实际的驱动程序路径

	# 设置 Edge 选项（可选）
	edge_options = Options()
	edge_options.add_argument('--headless')  # 无界面模式，可选

	# 创建 edge WebDriver
	service = Service(edge_driver_path)
	driver = webdriver.Edge(service=service, capabilities=edge_options)

	# 发送请求并获取页面内容
	driver.get(url)

	# 等待一段时间，确保页面加载完成
	time.sleep(5)

	# 找到 class 为 "main-content" 的部分
	main_content = driver.find_element(By.CLASS_NAME, 'main-content')

	# 初始化一个列表来保存视频链接
	video_links = []

	# 找到所有的视频链接并保存到列表中
	for video in main_content.find_elements(By.TAG_NAME, 'a'):
		# 检查链接是否是视频链接
		href = video.get_attribute('href')
		if href and href.startswith('https://www.bilibili.com/video/'):
			video_links.append(href)

	# 将视频链接保存到本地文件中
	with open('./video_links.txt', 'a') as file:
		for link in video_links:
			file.write(link + '\n')

	print(f'视频链接已保存到 video_links.txt 文件中。')

	# 关闭 WebDriver
	driver.quit()


# 通过传递不同的网页 URL 来实现对不同页面的爬取
url_list = [
	'https://space.bilibili.com/508312992/video',
	# 'https://space.bilibili.com/其他用户的主页/video',  # 替换为其他用户的主页
]

url_list = ["https://space.bilibili.com/508312992/video?tid=0&pn=" + str(x) for x in range(1, 100)]  # 通过循环爬取多页视频链接

for url in url_list:
	try:
		crawl_bilibili_videos(url)
	except Exception as e:
		print(f'爬取 {url} 时出现异常：{e}')
		break
